void imageconvolution( float A[],int m,int n, float F[],int F_rows,int F_cols, float C[] ){
      	int j;
    	int i;
	int k;
	int l;
	int r = F_rows/2;
	int s = F_cols/2;
	int index;
	int Aindex;
	int Findex;
	int lrow;
	int urow;
	int lcol;
	int ucol;
	#define max(a,b) \
   	({ __typeof__ (a) _a = (a); \
       		__typeof__ (b) _b = (b); \
     		_a > _b ? _a : _b; })
	#define min(a,b) \
   	({ __typeof__ (a) _a = (a); \
       		__typeof__ (b) _b = (b); \
     		_a < _b ? _a : _b; })
	for(i = 0; i<m*n; i++)
	{
     		C[i]=0;
	}
	for(i=-r;i<r+1;i++)
	{
		for(j=-s;j<s+1;j++)
		{
			Findex=(s-j)*F_cols+(r-i);
			lrow = max(1,1-i);
			urow = min(m,m-i);
			lcol = max(1,1-j);
			ucol = min(n,n-i);
			for(k=lrow-1;k<urow;k++)
			{
				for(l=lcol-1;l<ucol;l++)
				{
					index = k*n+l;
					Aindex = (k+i)*n+l+j;
					C[index]=C[index]+A[Aindex]*F[Findex];
				}
			}
		}
	}
		

 //   do i=-r,r 
   //    lrow = max(1,1-i)
   //    urow = min(m,m-j)
   //    do j = -s,s
   //        lcol = max(1,1-j)
   //        ucol = min(n,n-j)
   //        C(lrow:urow,lcol:ucol) = C(lrow:urow,lcol:ucol) + F(-i,-j) * A(lrow+i:urow+i,lcol+j:ucol+j)
   //   enddo
   //enddo		

    
}
